<!DOCTYPE html>
<html lang="cn" dir="ltr">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="mimalloc 是微软研究院在 2019 年发表并开源的一个新的内存分配库：
  性能大大优于市面上其他 memory allocator
 比 tcmalloc 快 7%    三个局部存储的分片的 free list
 增加数据访问局部性 (locality) 减少访问竞争 支持性能优化到极致的 alloc 和 free 的 fast path 引入一个时间节奏（temporal cadence），使分配器适时离开 fast path 来处理一些维护性的任务    #注意malloc() 与 HeapAlloc()的区别
 malloc()（和其他 C 运行时堆函数）依赖于模块，这意味着如果您在一个模块（即 DLL）的代码中调用 malloc()，那么您应该在同一模块的代码中调用 free()。  #malloc#A_MI_申请内存Mimalloc 申请内存
〈整数型〉 A_MI_申请内存 （整数型 大小，逻辑型 清零）
#A_MI_释放内存Mimalloc 释放内存
〈无返回值〉 A_MI_释放内存 （整数型 地址）
#A_MI_取内存大小取 MIMALLOC 申请的内存 占用字节数">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="内存池" />
<meta property="og:description" content="mimalloc 是微软研究院在 2019 年发表并开源的一个新的内存分配库：
  性能大大优于市面上其他 memory allocator
 比 tcmalloc 快 7%    三个局部存储的分片的 free list
 增加数据访问局部性 (locality) 减少访问竞争 支持性能优化到极致的 alloc 和 free 的 fast path 引入一个时间节奏（temporal cadence），使分配器适时离开 fast path 来处理一些维护性的任务    #注意malloc() 与 HeapAlloc()的区别
 malloc()（和其他 C 运行时堆函数）依赖于模块，这意味着如果您在一个模块（即 DLL）的代码中调用 malloc()，那么您应该在同一模块的代码中调用 free()。  #malloc#A_MI_申请内存Mimalloc 申请内存
〈整数型〉 A_MI_申请内存 （整数型 大小，逻辑型 清零）
#A_MI_释放内存Mimalloc 释放内存
〈无返回值〉 A_MI_释放内存 （整数型 地址）
#A_MI_取内存大小取 MIMALLOC 申请的内存 占用字节数" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://qianyuexingfu.gitee.io/doc/2mimalloc/" /><meta property="article:section" content="doc" />

<meta property="article:modified_time" content="2022-05-15T16:54:53+08:00" />

<title>内存池 | Documents for AAlib</title>
<link rel="manifest" href="../../manifest.json">
<link rel="icon" href="../../favicon.png" type="image/x-icon">
<link rel="stylesheet" href="../../book.min.3805156b94af62087ed8ccedc7a4d16449cb626453feea23d18d8459cc058f06.css" integrity="sha256-OAUVa5SvYgh&#43;2Mztx6TRZEnLYmRT/uoj0Y2EWcwFjwY=" crossorigin="anonymous">
  <script defer src="../../flexsearch.min.js"></script>
  <script defer src="../../cn.search.min.bae2e533ea2a941ee0268e8fb0f8515fc45cc9c24eee6e75bfad4fc9561fe79f.js" integrity="sha256-uuLlM&#43;oqlB7gJo6PsPhRX8RcycJO7m51v61PyVYf558=" crossorigin="anonymous"></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
  
</head>
<body dir="ltr">
  <input type="checkbox" class="hidden toggle" id="menu-control" />
  <input type="checkbox" class="hidden toggle" id="toc-control" />
  <main class="container flex">
    <aside class="book-menu">
      <div class="book-menu-content">
        
  <nav>
<h2 class="book-brand">
  <a href="../../"><span>Documents for AAlib</span>
  </a>
</h2>


<div class="book-search">
  <input type="text" id="book-search-input" placeholder="搜索" aria-label="搜索" maxlength="64" data-hotkeys="s/" />
  <div class="book-search-spinner hidden"></div>
  <ul id="book-search-results"></ul>
</div>











  



  
  <ul>
    
      
        <li>
          
  
  

  
    <span>关于</span>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="../../about/co/" class="">简介</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../about/contact/" class="">联系</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../about/sponsor/" class="">赞助💕</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <span>AALib 参考文档</span>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="../../doc/1base/" class="">基础命令</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/2mimalloc/" class=" active">内存池</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/3_%E5%8D%8F%E7%A8%8B/" class="">协程</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/4_%E6%97%A5%E5%BF%97/" class="">日志</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/5_%E6%AD%A3%E5%88%99/" class="">正则</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/6_%E7%BC%96%E7%A0%81%E8%BD%AC%E6%8D%A2/" class="">编码转换</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/7_rjson/" class="">Rjson</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/8_%E9%85%8D%E7%BD%AE/" class="">配置</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/9_%E8%AF%BB%E5%86%99%E9%94%81/" class="">读写锁</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/10_%E5%93%88%E5%B8%8C%E8%A1%A8/" class="">哈希表</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/11_%E6%95%B0%E6%8D%AE%E5%BA%93/" class="">数据库</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="../../doc/12_%E5%8F%8C%E7%AB%AF%E9%98%9F%E5%88%97/" class="">双端队列</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>















</nav>




  <script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>


 
      </div>
    </aside>

    <div class="book-page">
      <header class="book-header">
        
  <div class="flex align-center justify-between">
  <label for="menu-control">
    <img src="../../svg/menu.svg" class="book-icon" alt="Menu" />
  </label>

  <strong>内存池</strong>

  <label for="toc-control">
    
    <img src="../../svg/toc.svg" class="book-icon" alt="Table of Contents" />
    
  </label>
</div>


  
  <aside class="hidden clearfix">
    
  
<nav id="TableOfContents">
  <ul>
    <li><a href="#注意">注意</a></li>
    <li><a href="#malloc">malloc</a>
      <ul>
        <li><a href="#a_mi_申请内存">A_MI_申请内存</a></li>
        <li><a href="#a_mi_释放内存">A_MI_释放内存</a></li>
        <li><a href="#a_mi_取内存大小">A_MI_取内存大小</a></li>
        <li><a href="#a_mi_重置内存">A_MI_重置内存</a></li>
      </ul>
    </li>
    <li><a href="#heap">Heap</a>
      <ul>
        <li><a href="#a_mi_堆_创建">A_MI_堆_创建</a></li>
        <li><a href="#a_mi_堆_删除">A_MI_堆_删除</a></li>
        <li><a href="#a_mi_堆_销毁">A_MI_堆_销毁</a></li>
        <li><a href="#a_mi_堆_申请内存">A_MI_堆_申请内存</a></li>
        <li><a href="#a_mi_堆_重置内存">A_MI_堆_重置内存</a></li>
      </ul>
    </li>
    <li><a href="#示例">示例</a></li>
  </ul>
</nav>



  </aside>
  
 
      </header>

      
      
  <article class="markdown"><p>mimalloc 是微软研究院在 2019 年发表并开源的一个新的内存分配库：</p>
<ul>
<li>
<p>性能大大优于市面上其他 memory allocator</p>
<ul>
<li>比 tcmalloc 快 7%</li>
</ul>
</li>
<li>
<p>三个局部存储的分片的 free list</p>
<ul>
<li>增加数据访问局部性 (locality)</li>
<li>减少访问竞争</li>
<li>支持性能优化到极致的 alloc 和 free 的 fast path</li>
<li>引入一个时间节奏（temporal cadence），使分配器适时离开 fast path 来处理一些维护性的任务</li>
</ul>
</li>
</ul>
<h1 id="注意"><a class="anchor" href="#%e6%b3%a8%e6%84%8f">#</a>注意</h1>
<p>malloc() 与 HeapAlloc()的区别</p>
<ul>
<li>malloc()（和其他 C 运行时堆函数）依赖于模块，这意味着如果您在一个模块（即 DLL）的代码中调用 malloc()，那么您应该在同一模块的代码中调用 free()。</li>
</ul>
<h1 id="malloc"><a class="anchor" href="#malloc">#</a>malloc</h1>
<h2 id="a_mi_申请内存"><a class="anchor" href="#a_mi_%e7%94%b3%e8%af%b7%e5%86%85%e5%ad%98">#</a>A_MI_申请内存</h2>
<p>Mimalloc 申请内存<br>
〈整数型〉 A_MI_申请内存 （整数型 大小，逻辑型 清零）</p>
<h2 id="a_mi_释放内存"><a class="anchor" href="#a_mi_%e9%87%8a%e6%94%be%e5%86%85%e5%ad%98">#</a>A_MI_释放内存</h2>
<p>Mimalloc 释放内存<br>
〈无返回值〉 A_MI_释放内存 （整数型 地址）</p>
<h2 id="a_mi_取内存大小"><a class="anchor" href="#a_mi_%e5%8f%96%e5%86%85%e5%ad%98%e5%a4%a7%e5%b0%8f">#</a>A_MI_取内存大小</h2>
<p>取 MIMALLOC 申请的内存 占用字节数<br>
〈整数型〉 A_MI_取内存大小 （整数型 指针）</p>
<h2 id="a_mi_重置内存"><a class="anchor" href="#a_mi_%e9%87%8d%e7%bd%ae%e5%86%85%e5%ad%98">#</a>A_MI_重置内存</h2>
<p>重置 MIMALLOC 申请的内存尺寸<br>
〈整数型〉 A_MI_重置内存 （整数型 指针，整数型 大小，逻辑型 清零）</p>
<h1 id="heap"><a class="anchor" href="#heap">#</a>Heap</h1>
<p>堆操作</p>
<h2 id="a_mi_堆_创建"><a class="anchor" href="#a_mi_%e5%a0%86_%e5%88%9b%e5%bb%ba">#</a>A_MI_堆_创建</h2>
<p>〈整数型〉 A_MI_堆_创建 （）</p>
<h2 id="a_mi_堆_删除"><a class="anchor" href="#a_mi_%e5%a0%86_%e5%88%a0%e9%99%a4">#</a>A_MI_堆_删除</h2>
<p>〈无返回值〉 A_MI_堆_删除 （整数型 堆句柄）</p>
<h2 id="a_mi_堆_销毁"><a class="anchor" href="#a_mi_%e5%a0%86_%e9%94%80%e6%af%81">#</a>A_MI_堆_销毁</h2>
<p>〈无返回值〉 A_MI_堆_销毁 （整数型 堆句柄）</p>
<h2 id="a_mi_堆_申请内存"><a class="anchor" href="#a_mi_%e5%a0%86_%e7%94%b3%e8%af%b7%e5%86%85%e5%ad%98">#</a>A_MI_堆_申请内存</h2>
<p>〈整数型〉 A_MI_堆_申请内存</p>
<h2 id="a_mi_堆_重置内存"><a class="anchor" href="#a_mi_%e5%a0%86_%e9%87%8d%e7%bd%ae%e5%86%85%e5%ad%98">#</a>A_MI_堆_重置内存</h2>
<p>〈整数型〉 A_MI_堆_重置内存 （整数型 堆句柄，整数型 指针，整数型 新尺寸，逻辑型 清零）</p>
<h1 id="示例"><a class="anchor" href="#%e7%a4%ba%e4%be%8b">#</a>示例</h1>
<div>
    <link href="../../ecode/ecode.css" type="text/css" rel="stylesheet">
    <script type="text/javascript" src="../../ecode/ecode.js"></script>
    <div class="col-lg-6" style="height: auto; width: 100%; font-size: 8px">
        <div class="ecode" id="e示例1" desc="代码段: 示例1" style="height: auto; width: 100%; font-size: 8px"></div>
    </div>
    <div>
      
    </div>
    <script>
        var codes = Ecode.create();
        function putin() {
            EcodeSetCode(document.getElementById("e示例1"),"\r\n.版本 2\r\n.支持库 spec\r\n.支持库 aalib\r\n\r\n.子程序 内存申请测速\r\n.局部变量 addr, 整数型\r\n.局部变量 i, 整数型\r\n.局部变量 计时, 计时\r\n.局部变量 s, 长整数型\r\n.局部变量 s2, 长整数型\r\n\r\n计时.开始计时 ()\r\n.计次循环首 (1000000, i)\r\n    addr ＝ 申请内存 (i × 10, 假)\r\n    释放内存 (addr)\r\n.计次循环尾 ()\r\ns ＝ 计时.取运行毫秒 ()\r\n计时.开始计时 ()\r\n.计次循环首 (1000000, i)\r\n    addr ＝ A_MI_申请内存 (i × 10, 假)\r\n    A_MI_释放内存 (addr)\r\n.计次循环尾 ()\r\ns2 ＝ 计时.取运行毫秒 ()\r\n编辑框1.加入文本 (A_变量到文本E (“内存申请测速：”, “易”, s, “mimalloc”, s2, #换行符))\r\n\r\n");
            codes.trans();
        }
        putin();
    </script>

</div>


</article>
 
      

      <footer class="book-footer">
        
  <div class="flex flex-wrap justify-between">





</div>

 
        









      </footer>

      
  
 

      <label for="menu-control" class="hidden book-menu-overlay"></label>
    </div>

    
    <aside class="book-toc">
      <div class="book-toc-content">
        
  
<nav id="TableOfContents">
  <ul>
    <li><a href="#注意">注意</a></li>
    <li><a href="#malloc">malloc</a>
      <ul>
        <li><a href="#a_mi_申请内存">A_MI_申请内存</a></li>
        <li><a href="#a_mi_释放内存">A_MI_释放内存</a></li>
        <li><a href="#a_mi_取内存大小">A_MI_取内存大小</a></li>
        <li><a href="#a_mi_重置内存">A_MI_重置内存</a></li>
      </ul>
    </li>
    <li><a href="#heap">Heap</a>
      <ul>
        <li><a href="#a_mi_堆_创建">A_MI_堆_创建</a></li>
        <li><a href="#a_mi_堆_删除">A_MI_堆_删除</a></li>
        <li><a href="#a_mi_堆_销毁">A_MI_堆_销毁</a></li>
        <li><a href="#a_mi_堆_申请内存">A_MI_堆_申请内存</a></li>
        <li><a href="#a_mi_堆_重置内存">A_MI_堆_重置内存</a></li>
      </ul>
    </li>
    <li><a href="#示例">示例</a></li>
  </ul>
</nav>


 
      </div>
    </aside>
    
  </main>

  
</body>
</html>












